#include <iostream>

using namespace std;
int res;
int n;
const int N = 10000;
// 0 1 2 3 4 5 6 7 8 9
int arr[N];
int num[N] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
int cal(int x)
{
    if (num[x] > 0)
        return num[x];
    else
    {
        int sum_fires = 0;
        while (x)
        {
            sum_fires += num[x % 10];
            x /= 10;
        }
        return sum_fires;
    }
}
void dfs(int x, int sum)
{
    if (sum > n)
        return;
    if (x > 3)
    {
        if (arr[1] + arr[2] == arr[3] && n == sum)
        {
            res++;
        }
        return;
    }
    for (int i = 0; i <= 1000; i++)
    {
        arr[x] = i;
        dfs(x + 1, sum + num[i]);
        arr[x] = 0; // 恢复现场
    }
}
int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n;
    n -= 4;
    for (int i = 10; i <= 1000; i++)
    {
        num[i] = num[i % 10] + num[i / 10];
    }
    dfs(1, 0);
    cout << res << endl;
    return 0;
}

// #include <iostream>
// using namespace std;
// const int N = 10010;
// int n;
// int num[N] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
// int arr[N]; // 储存当前的临时方案
// int res;
// void dfs(int x, int sum)
// {
//     if (sum > n) // 剪枝
//         return;
//     if (x > 3)
//     {
//         if (arr[1] + arr[2] == arr[3] && n == sum)
//         {
//             res++;
//         }
//         return;
//     }
//     for (int i = 0; i <= 1000; i++)
//     {
//         arr[x] = i;
//         dfs(x + 1, sum + num[i]);
//         arr[x] = 0;
//     }
// }
// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     cin >> n;
//     // 由于加号和等号，要减去4才是能用在数字上的火柴数
//     n -= 4;
//     // 预处理火柴数
//     for (int i = 10; i <= 1000; i++)
//     {
//         num[i] = num[i % 10] + num[i / 10];
//     }
//     dfs(1, 0);
//     return 0;
// }
